Virtual Machines Explained